package com.liangwj.springbootquickstart.MultiDataSource;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;


/**
 * TODO: 属于Spring的
 * AbstractRoutingDataSource获取数据源之前会先调用determineCurrentLookupKey方法查找当前的lookupKey，这个lookupKey就是数据源标识。
 * 因此通过重写这个查找数据源标识的方法就可以让spring切换到指定的数据源了。
 * 创建一个DynamicDataSource的类，继承AbstractRoutingDataSource并重写determineCurrentLookupKey方法
 * 后续:配置多个数据源和第一步里创建的DynamicDataSource的bean
 *
 * 2018年12月13日11:30:19
 * Caused by: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class
 * 是因为springboot 的原因 只取 spring.datasource前缀的属性,故本次学习环境测试无法成功
 * @author Liangwenjun
 * @date 2018-12-12
 * @version 1.0
 */
public class DynamicDataSource extends AbstractRoutingDataSource {

    @Override
    protected Object determineCurrentLookupKey() {
        System.out.println("AbstractRoutingDataSource:" + DynamicDataSourceHolder.getThreadDataSource() );
        return DynamicDataSourceHolder.getThreadDataSource();
    }

}
